home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 12 / CU Amiga Magazine's Super CD-ROM 12 (1997)(EMAP Images)(GB)[!][issue 1997-07].iso / CUCD / Programming / PopupMenu / include / libraries / pm.h.auts < prev   
Text File  |  1997-04-19  |  7KB  |  194 lines

  1. //
  2. //    $VER: pm.h 4.1 (20.4.97)
  3. //
  4. //    Library base, tags and macro definitions
  5. //    for popupmenu.library.
  6. //
  7. //    ©1996-1997 Henrik Isaksson
  8. //    All Rights Reserved.
  9. //
  10.  
  11. #ifndef LIBRARIES_POPUPMENU_H
  12. #define LIBRARIES_POPUPMENU_H
  13.  
  14. #ifndef EXEC_TYPES_H
  15. #include <exec/types.h>
  16. #endif
  17.  
  18. #ifndef EXEC_LIBRARIES_H
  19. #include <exec/libraries.h>
  20. #endif
  21.  
  22. #ifndef UTILITY_TAGITEM_H
  23. #include <utility/tagitem.h>
  24. #endif
  25.  
  26. //
  27. // Tags passed to OpenPopupMenu
  28. //
  29.  
  30. #define PM_SubMenuTimer        (TAG_USER+1)    // Delay before opening submenus
  31. #define PM_RecessSelected    (TAG_USER+2)    // Recess selected item
  32. #define PM_WideSelectBar    (TAG_USER+3)    // Wide selectbar
  33. #define PM_Menu            (TAG_USER+4)    // Pointer to menulist initialized by MakeMenu()
  34. #define PM_Compact        (TAG_USER+5)    // Make the menu more compact (smaller)
  35. #define PM_OldLook        (TAG_USER+6)    // Make the menu look (almost) like old intuition menus
  36. #define PM_SameHeight        (TAG_USER+7)    // Make all items the same height
  37. #define PM_CheckMark        (TAG_USER+8)    // Checkmark (Default: MENUCHECK)
  38. #define PM_ExcludeMark        (TAG_USER+9)    // Checkmark for items with exclusion or inclusion set (Default: MXIMAGE)
  39. #define PM_SubMenuMark        (TAG_USER+10)    // Menu mark (Default: RIGHTIMAGE)
  40. #define PM_SmartRefresh        (TAG_USER+11)    // Smart refreshing (uses more memory, faster)
  41. #define PM_Top            (TAG_USER+12)    // Top (Y) position
  42. #define PM_Left            (TAG_USER+13)    // Left (X) position
  43. #define PM_Code            (TAG_USER+14)    // The contents of the code field of IntuiMessage (ALWAYS!)
  44.  
  45. //
  46. // Tags passed to MakeItem
  47. //
  48.  
  49. #define PM_Title        (TAG_USER+20)    // Item title
  50. #define PM_UserData        (TAG_USER+21)    // Anything, returned by OpenPopupMenu when this item is selected
  51. #define PM_ID            (TAG_USER+22)    // ID number, if you want to access this item later
  52. #define PM_Sub            (TAG_USER+23)    // Pointer to submenu list (from MakeMenu)
  53. #define PM_Flags        (TAG_USER+24)    // For internal use
  54. #define PM_NoSelect        (TAG_USER+25)    // Make the item unselectable
  55. #define PM_FillPen        (TAG_USER+26)    // Make the item appear in FILLPEN
  56. #define PM_Checkit        (TAG_USER+27)    // Leave space for a checkmark
  57. #define PM_Checked        (TAG_USER+28)    // Make this item is checked
  58. #define PM_Italic        (TAG_USER+29)    // Italic text
  59. #define PM_Bold            (TAG_USER+30)    // Bold text
  60. #define PM_Underlined        (TAG_USER+31)    // Underlined text
  61. #define PM_TitleBar        (TAG_USER+32)    // Horizontal separator bar
  62. #define PM_WideTitleBar        (TAG_USER+33)    // Same as above, but full width
  63. #define PM_ShadowPen        (TAG_USER+34)    // Draw text in SHADOWPEN
  64. #define PM_ShinePen        (TAG_USER+35)    // Draw text in SHINEPEN
  65. //#define PM_CenterText        (TAG_USER+36)
  66. #define PM_Exclude        (TAG_USER+37)    // Items to unselect (or select) when this gets selected
  67. #define PM_Disabled        (TAG_USER+38)    // Disable an item
  68. #define PM_ImageSelected    (TAG_USER+39)    // Image when selected, PM_Title will be render on top of the image
  69. #define PM_ImageUnselected    (TAG_USER+40)    // Image when unselected
  70. #define PM_IconSelected        (TAG_USER+41)    // Icon when selected
  71. #define PM_IconUnselected    (TAG_USER+42)    // Icon when unselected
  72. //#define PM_ImageMode        (TAG_USER+43)
  73. #define PM_AutoStore        (TAG_USER+44)    // Pointer to BOOL reflecting the current state of the item
  74. #define PM_TextPen        (TAG_USER+45)    // Pen number for text colour of this item, if you want to allocate a pen yourself
  75.  
  76. //
  77. // Tags passed to MakeMenu
  78. //
  79.  
  80. #define PM_Item            (TAG_USER+50)    // Item pointer from MakeItem
  81.  
  82. //
  83. // Tags passed to MakeIDList
  84. //
  85.  
  86. #define PM_ExcludeID        (TAG_USER+55)    // ID number of menu to deselect when this gets selected
  87. #define PM_IncludeID        (TAG_USER+56)    // ID number of menu to select when this gets selected
  88. #define PM_ReflectID        (TAG_USER+57)    // ID number of menu that should reflect the state of this one
  89. #define PM_InverseID        (TAG_USER+58)    // ID number of menu to inverse reflect the state of this one
  90.  
  91. //
  92. // Built-in Images
  93. //
  94.  
  95.                         //              /
  96. #define IMG_CHECKMARK        (0x10L)        // Checkmark        \/
  97. #define IMG_RIGHTARROW        (0x0CL)        // SysIClass Arrow    |>|
  98. #define IMG_MXIMAGE        (0x0FL)        // SysIClass MX        (*)
  99. #define IMG_CHECKIMAGE        (0x0EL)        // SysIClass Checkbox    | |
  100. #define IMG_AMIGAKEY        (0x11L)        // Amiga Key Image    |A|
  101.  
  102. #define    IMG_BULLET_A        (0x8000L)    // bullet        ·
  103. #define    IMG_BULLET_B        (0x8100L)    // 3d bullet        ·
  104. #define    IMG_ARROW_A        (0x8200L)    // Arrow        >
  105. #define IMG_ARROW_B        (0x8300L)    // 3d arrow        >
  106. #define IMG_ARROW_C        (0x8400L)    // Arrow        ->
  107.  
  108. //
  109. // Macros
  110. //
  111.  
  112. #define PMMenu(t)    PM_MakeMenu(PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  113.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  114. #define PMSubMenu(t)    PM_Sub, PM_MakeMenu(PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  115.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  116. #define PMItem(t)    PM_Item, PM_MakeItem(PM_Title, t
  117. #define PMTitleBar    PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE
  118. #define PMNarrowTitleBar    PM_Item, PM_MakeItem(PM_TitleBar, TRUE
  119. #define PMMenuTitle(t)    PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  120.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  121. #define PMExcl        PM_Exclude, PM_MakeIDList(
  122. #define ExID(id)    PM_ExcludeID, id
  123. #define InID(id)    PM_IncludeID, id
  124. #define RefID(id)    PM_ReflectID, id
  125. #define InvID(id)    PM_InverseID, id
  126. #define PMCheckItem(t,id)    PM_Item, PM_MakeItem(PM_Title, t, PM_ID, id, PM_Checkit, TRUE
  127.  
  128. #define PMEnd        TAG_DONE)
  129.  
  130. #ifndef End
  131. #define End        TAG_DONE)
  132. #endif
  133.  
  134. #define PMERR        (-5L)
  135.  
  136.  
  137. #ifndef LIBRARIES_BGUI_H
  138. //
  139. // WARNING! Theese macros are obsolete due to interference with macros
  140. // declared by BGUI!
  141. // The new macros are defined above
  142. //
  143. #define Menu(t)        MakeMenu(PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  144.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  145. #define SubMenu(t)    PM_Sub, MakeMenu(PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  146.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  147. #define Item(t)        PM_Item, MakeItem(PM_Title, t
  148. #define TitleBar    PM_Item, MakeItem(PM_WideTitleBar, TRUE
  149. #define NarrowTitleBar    PM_Item, MakeItem(PM_TitleBar, TRUE
  150. #define MenuTitle(t)    PM_Item, MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  151.             PM_Item, MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  152. #define Excl        PM_Exclude, MakeIDList(
  153. #define ExID(id)    PM_ExcludeID, id
  154. #define InID(id)    PM_IncludeID, id
  155. #define RefID(id)    PM_ReflectID, id
  156. #define InvID(id)    PM_InverseID, id
  157. #define CheckItem(t,id)    PM_Item, MakeItem(PM_Title, t, PM_ID, id, PM_Checkit, TRUE
  158. #endif    /* LIBRARIES_BGUI_H */
  159.  
  160. //
  161. // Library base
  162. //
  163.  
  164. struct PopupMenuBase {
  165.     struct Library        pmb_Library;
  166.     ULONG            pmb_SegList;
  167.     ULONG            pmb_Flags;
  168.     struct Library        *pmb_ExecBase;
  169.     struct Library        *pmb_UtilityBase;
  170.     struct Library        *pmb_IntuitionBase;
  171.     struct Library        *pmb_GfxBase;
  172.     struct Library        *pmb_DOSBase;
  173.     BOOL            pmb_NewPrefs;
  174. };
  175.  
  176. #define POPUPMENU_VERSION    4L
  177. #define POPUPMENU_NAME        "popupmenu.library"
  178.  
  179. #ifndef PM_NEWNAMES    // The naming has changed from V2, this should provide
  180.             // backwards compatibility. (disable with #define PM_NEWNAMES)
  181. #define MakeItem    PM_MakeItem
  182. #define MakeMenu    PM_MakeMenu
  183. #define MakeItemA    PM_MakeItemA
  184. #define MakeMenuA    PM_MakeMenuA
  185. #define FreePopupMenu    PM_FreePopupMenu
  186. #define OpenPopupMenu    PM_OpenPopupMenu
  187. #define OpenPopupMenuA    PM_OpenPopupMenuA
  188. #define MakeIDList    PM_MakeIDList
  189. #define MakeIDListA    PM_MakeIDListA
  190. #define ItemChecked    PM_ItemChecked
  191. #endif
  192.  
  193. #endif
  194.